package com.kai.mqtt.session.service;

import com.kai.mqtt.data.PageResult;
import com.kai.mqtt.data.request.PageSessionRequest;
import com.kai.mqtt.data.response.SessionResponse;
import com.kai.mqtt.session.Session;

/**
 * 会话存储服务
 *
 * @author weijk
 * @since 2024/6/9
 */
public interface ISessionService {

    /**
     * 保存会话
     */
    void put(Session session);

    /**
     * 删除会话
     *
     * @param clientId 客户端 id
     */
    void remove(String clientId);

    /**
     * 获取会话信息
     *
     * @param clientId 客户端 id
     */
    Session get(String clientId);

    /**
     * 获取连接数
     *
     * @return 连接数
     */
    Integer getConnect();

    /**
     * 获取在线连接数
     *
     * @return 在线连接数
     */
    Integer getOnlineConnect();

    /**
     * 分页查询会话列表
     *
     * @param request 参数
     * @return 会话列表
     */
    PageResult<SessionResponse> pageSession(PageSessionRequest request);

    /**
     * 删除会话
     *
     * @param clientId 客户端 id
     * @return true-成功，false-失败
     */
    Boolean deleteSession(String clientId);
}
